package editorsvg.propiedades;

import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JComponent;

/**
 * Propiedad que contiene un objeto Font.
 *
 * @author Jorge Berjano
 */
public class PropiedadFuente extends Propiedad {

    private transient JButton botonEdicion;

    /** Constructor por defecto */
    public PropiedadFuente() {
    }

//    @Override
//    public Class getClase() {
//        return Font.class;
//    }

    @Override
    public String toString() {
        Font fuente = obtenerFuente();
        if (fuente != null) {
            return fuente.getFamily() + ", " + fuente.getStyle() + ", " + fuente.getSize();
        } else {
            return "";
        }
    }

    public Font obtenerFuente() {
//        Object valor = getValor();
//        if (valor instanceof Font) {
//            return (Font) valor;
//        } else {
            return null;
//        }
    }

    public void asignarFuente(Font fuente) {
//        setValor(fuente);
    }

    public JComponent obtenerComponenteModificacion() {
        if (botonEdicion == null) {
            botonEdicion = new JButton("...");
            botonEdicion.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent evento) {
                    botonPulsado(evento);
                }
            });
        }
        return botonEdicion;
    }
    // Si se pulsa el bot�n se muestra el dialogo de selecci�n de fuente
    // Al aceptar el di�logo se cambia la fuente del par�metro.

    private void botonPulsado(ActionEvent evento) {
        JFontChooser dlg = new JFontChooser(null);
        if (dlg.showDialog(obtenerFuente()) == JFontChooser.OK_OPTION) {
            asignarFuente(dlg.getFont());
        //notificarCambios();
        }
    }

    public boolean permitirEditarTexto() {
        return false;
    }

    public boolean parsearPropiedad(String valorString) {
        return false;
    }
}
